package org.lanyu.springainovel.common.event;

import lombok.Getter;
import org.lanyu.springainovel.common.entity.User;
import org.springframework.context.ApplicationEvent;

/**
 * 用户变更事件
 * 当用户信息发生变化时发布此事件，用于同步缓存或其他需要响应的组件
 */
@Getter
public class UserChangeEvent extends ApplicationEvent {

    /**
     * 变更的用户信息
     */
    private final User user;
    
    /**
     * 变更类型
     */
    private final ChangeType changeType;

    /**
     * 构造函数
     * 
     * @param source 事件源
     * @param user 变更的用户信息
     * @param changeType 变更类型
     */
    public UserChangeEvent(Object source, User user, ChangeType changeType) {
        super(source);
        this.user = user;
        this.changeType = changeType;
    }

    /**
     * 用户变更类型枚举
     */
    public enum ChangeType {
        /**
         * 创建用户
         */
        CREATE,
        /**
         * 更新用户
         */
        UPDATE,
        /**
         * 删除用户
         */
        DELETE
    }
}